//d 表示 数字 0-9
//w 表示 a-zA-Z_0-9
// .表示一个占位符

public class Test {
    public static void main(String[] args) {
        String regex = "[0-9]\\d{16}(X|x|\\d)";//简单的身份证要求

        //具体身份证要求 前六位任意数字第一位不能为 0  [1-9]\\d{5}
        //年的前半段 18 19 20  (18|19|20)
        //年的后半段 任意两位数字 \\d{2}
        //月份 01-09 10 11 12 (0[1-9]|1[0-2])
        //日期 01 - 31 01-09 10-19 20-29 30 31 (0[1-9]|[12][0-9]|3[01])
        //最后四位 最后一位xX或者是数字 \\d{3}(x|X|\\d)

        String regex1 = "[1-9]\\d{5}(18|19|20)\\d{2}(0[1-9]|1[0-2])(0[1-9]|[12][0-9]|3[01])\\d{3}(x|X|\\d)";
        System.out.println("340822200506221414".matches(regex1));
    }
}
